/**
 * Created by Smile on 2017/2/24.
 */
window.onload = function () {
    var container = document.getElementById('banner');
    var list = document.getElementById('list');
    var buttons = document.getElementById('buttons').getElementsByTagName('span');
    var prev = document.getElementById('prev');
    var next = document.getElementById('next');
    var index = 1; //小圆点的位置
    var animated = false;  //是否处于动画状态
    var timer;
// 通过修改每次点击修改容器banner的left值，来实现图片的轮换，所以点击next就会先减600px，期间注意left是一个字符串，而600是一个数字。
    //offset就是移动值
    function animate(offset) {
        //要向移动是对应的，必须保证speed是一个整数，否则必然会有误差，所以time和interval 必须要好好选择。
        animated = true;
        var newleft = parseInt(list.style.top) + offset;
        var time = 340;  //位移的总时间
        var interval = 34;  //位移间隔时间
        var speed = offset / (time / interval); //每次位移量；

        function go() {
            if ((speed < 0 && parseInt(list.style.top) > newleft) || (speed > 0 && parseInt(list.style.top) < newleft)) {   //向左移动
                list.style.top = parseInt(list.style.top) + speed + 'px';
                setTimeout(go, interval);  //迭代，直到满足指定宽度；
            }
            else {
                animated = false;
                list.style.top = newleft + 'px';  //移动到边界图时，将之归位。
                if (newleft > -340) {
                    list.style.top = -1360 + 'px';
                }
                if (newleft < -1360) {
                    list.style.top = -340 + 'px';
                }
            }
        }

        go();
    }

    //每个3秒就执行一次自动播放。
    function play() {
        timer = setInterval(function () {
            next.onclick();
        }, 3000);
    }

// 清除计时器
    function stop() {
        clearInterval(timer);
    }

    function showButton() {
        for (var i = 0; i < buttons.length; i++) {
            if (buttons[i].className == 'on') {
                buttons[i].className = '';
                break;
            }
        }
        buttons[index - 1].className = 'on';

    }

    prev.onclick = function () {
        if (index == 1) {
            index = 4;
        }
        index -= 1;

        if (!animated) {
            animate(340)
        }
        showButton();
    };
    next.onclick = function () {
        if (index == 4) {
            index = 0;
        }
        index += 1;

        if (!animated) {
            animate(-340)
        }
        showButton();
    };
    for (var i = 0; i < buttons.length; i++) {
        buttons[i].onclick = function () {
            if (this.className == 'on')  //当点击的是自身，则不做任何处理。
            {
                return;
            }
            var myindex = this.getAttribute('index');   //获取index的值，但是只能用该函数取得。
            var offset = -340 * (myindex - index);  //偏移量的计算。
            index = myindex;  //切换并更新当前的index值。

            animate(offset);
            showButton();
        }
    }
    container.onmouseover = stop;
    container.onmouseout = play;
    play();  //开始之前，自动播放；
}